﻿using System;
using YoUI.Core.UIAnima;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
namespace YoUI.Core
{
    public abstract class YoBase : MonoBehaviour
    {

        // 定义默认窗口类型
        public YoSysDefine.UIFormType _UIFormType = YoSysDefine.UIFormType.Normal;

        // 定义窗口默认显示类型
        public YoSysDefine.UIFormShowMode _UIFormShowMode = YoSysDefine.UIFormShowMode.Normal;

        // 遮罩的透明度
        protected float _MaskOpacity = 0.5f;

        // 窗口显示与隐藏的几种状态事件
        public event Action<YoBase> OnShow;
        public event Action<YoBase> OnHide;

        // 显示窗口
        public virtual void Show()
        {
            if (OnShow == null)
            {
                ShowMask();
                gameObject.SetActive(true);
            }
            else
            {
                OnShow(this);
            }
        }

        // 隐藏窗口
        public virtual void Hide()
        {
            if (OnHide == null)
            {
                HideMask();
                gameObject.SetActive(false);
            }
            else
            {
                OnHide(this);
            }
        }

        // 重新显示窗口
        public virtual void ReShow()
        {
           Show();
        }

        // 冻结窗口
        public virtual void Freeze()
        {
            Hide();
        }

        // 显示遮罩
        public virtual void ShowMask()
        {
            if (_UIFormType == YoSysDefine.UIFormType.PopUp)
            {
                YoMaskMgr.GetUIMask.ShowMask(transform, _MaskOpacity);
            }
        }

        // 隐藏遮罩
        public virtual void HideMask()
        {
            if (_UIFormType == YoSysDefine.UIFormType.PopUp)
            {
                YoMaskMgr.GetUIMask.HideMask();
            }
        }
    }
}


